SQLのCREATE TABLE
tableを定義する
どういうcolumnを持つのかの列挙
どういう制約を持つのかを記述
例
code:sql
CREATE TABLE order (
order_id int(11) NOT NULL AUTO_INCREMENT,
user_id int(11) unsigned NOT NULL,
produc_id int(11) unsigned NOT NULL,
updated_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (order_id),
UNIQUE (user_id, product_id, user_id),
CONSTRAINT
FOREIGN KEY (user_id)
REFERENCES users (user_id)
ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT
FOREIGN KEY (product_id)
REFERENCES products (product_id)
ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
制約関連
各制約のページを参照mrsekut.icon
遅延制約
トランザクションの実行中は制約をオフにする
よくわからん
制約を施行するタイミングを制御する?
DML文が実行された時か、トランザクションが終了する時か